COMMENT    VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	 F2 VERSION OF MICROCODE
C00004 ENDMK
C;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ; F2 VERSION OF MICROCODE

.INSERT SWINIT

F2SW = 1


XLIST

.INSERT CFDEF

LIST

.INSERT CFEXT

:5122
DIAGI:	FIXM1 PUSHJ[DIAGI2] NORM $
	ALU[Q] DEST[MEMSTO] MEMST $
;	---
:5126
DIAGO:	FIXM1 PUSHJ[DIAGO2] $
	SPEC[MA_PC] DEST[MA] JUMP[MAIN1] NORM $
;	---

:7700
DIAGI2:	D[MEM] DEST[AR DEV-ADR] PUSHJ[DIAGSB] NORM $
		;Set device address and setup for MAPF
	D[MA] ALU[D+1] DEST[MA] NORM $
	SPEC[IOB-IN] ALU[Q] SDISP $
;	---

DIAGO2:	D[MEM] DEST[AR DEV-ADR] PUSHJ[DIAGSB] NORM $
	D[MA] ALU[D+1] DEST[MA] NORM $
	FIXM1 $
	D[MEM] DEST[IOD] NORM $
	SPEC[IOB-OUT] ALU[Q] SDISP $
;	---


MAPFTB:
	MAPFNO = 0
.REPEAT 20 [
	MAPF[MAPFNO] D[IOD] DEST[Q] POPJ $
	MAPFNO = MAPFNO + 1
]

DIAGSB:
	D[AR] ROT[36. - 6] MASK[4] DEST[Q] $
		;Extract subselect
	D[CONST (MAPFTB / 100)] ROT[6] ALU[D+Q] DEST[Q] NORM $
		;Construct pointer into MAPF table
	D[CONST (MAPFTB \ 100)] ALU[D+Q] DEST[Q] POPJ NORM $
		;Finished with MAPF pointer.  Done

